不太懂用ILIST<>???

来源:百度知道 编辑:UC知道 时间:2024/06/04 15:30:56
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
SortedList<string,string> books=new SortedList<string,string>();
books.Add("hmxbanz", "22222");
books.Add("banz","19781125");
IList<string> aaa = books.Values as IList<string>;
foreach(string a in aaa)
{Console.WriteLine(a);}

}
}
}
--------------------
IList<string> aaa = books.Values as IList<string>;这一句改换成ILIST接口,
-----------------
foreach(string a in aaa)这里又把接口当做集合一样来用。

---学习的时候说接口只是被继承的呀,和集合有什么关系,

首先SortedList是肯定是实现了IList接口的,所以可以将books强制转换成IList类型的对象,转换后呢?是不是aaa调用的是IList接口里面的方法呢?肯定不是的,因为接口的方法都是没实现的,其实调用的还是SortedList里面的方法;有一点必须清楚,接口的方法在编译成IL(中间语言)时候会被标记成virtual方法(虚方法),所以即使转换为父接口的类型也是调用的子类本身的方法。而IList接口又继承了IEnumerable接口,所有实现了IEnumerable接口的对象,都可以用迭代器取值。

泛型避免装箱与拆箱操作